package com.terry.test3;

import java.util.*;

/**
 * 给你几个服务器（忘了叫啥了），几个之间可以内部通信，给你多行字符串（样例见下），dp[i][j]的值如果为1，表示可以直接通信，为0则不通信，问你需要连接几个服务器，能使得所有服务器可以直接通信。
 * 思路呢，就是并查集，模板题，啥也没变，返回不连通的一共有几堆即可。    AC了，代码仅供参考
 * 只能DFS递归遍历了
 * 1 0 0
 * 0 1 0
 * 0 0 1
 * 输出 3
 * @author 小八
 * @date 2023年02月10日9:54
 */
public class Title13 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        while(in.hasNextLine()){
            String[] split = in.nextLine().split(" ");
            int n = Integer.parseInt(split[0]);
            int m = Integer.parseInt(split[1]);
            int[][] arr = new int[n+1][n+1];
            while(m>0){
                String[] tempArr = in.nextLine().split(" ");
                int v1 = Integer.parseInt(tempArr[0]);
                int v2 = Integer.parseInt(tempArr[1]);
                arr[v1][v2] = 1 ;
                arr[v2][v1] = 1 ;
                m--;
            }
            int b = Integer.parseInt(in.nextLine());
            int maxScore = 0;
            int[] mark = new int[n+1];
            for(int i =1;i<=n;i++){
                mark[b] = 1;
                if(b != i) {
                    int score = searchDfs(arr, n, b, i, mark, 1);
                    if (score != Integer.MAX_VALUE) {
                        maxScore = Math.max(score, maxScore);
                    }
                }
            }
            System.out.println(maxScore*2);
        }
    }

    public static int searchDfs(int[][] arr,int n,int b,int index,int[] mark,int countLen){
        if(arr[b][index] == 1 || arr[index][b] == 1){
            return countLen;
        }
        int result = Integer.MAX_VALUE;
        for(int i=1;i<=n;i++){
            if(arr[b][i] == 1 && mark[i] != 1){
                mark[i] = 1;
                result = Math.min(searchDfs(arr,n,i,index,mark,countLen+1),result);
                mark[i] = 0;
            }
        }
        return result;
    }
}
//5 4
//2 1
//1 4
//2 3
//4 5
//2


//
//5 5
//2 1
//1 4
//2 4
//2 3
//3 4
//2